package com.zeng.conditional;

import com.zeng.bean.RainBow;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author Zqm
 * @Title: MyImportBeanDefinitionRegistrar
 * @ProjectName SpringAnnotationDriven
 * @date 2019/1/14
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    /**
     *
     * @param annotationMetadata  当前注解类的注释信息
     * @param beanDefinitionRegistry bean定义的注册类
     * 把所有需要添加容器中的bean  beanDefinitionRegistry.registerBeanDefinition 来手动注册
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
        boolean red = beanDefinitionRegistry.containsBeanDefinition("com.zeng.bean.Red");
        boolean blue = beanDefinitionRegistry.containsBeanDefinition("com.zeng.bean.Blue");
        if (red&&blue){
            //指定bean的定义信息  bean的类型 bean的scope作用域
            RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(RainBow.class);
            //注册一个bean  指定bean名
            beanDefinitionRegistry.registerBeanDefinition("rainBow",rootBeanDefinition);
        }
    }
}
